-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Рефакторинг доменной модели #10
Conversation
Minimum allowed coverage is Generated by 🐒 cobertura-action against f5c850c |
Также этот PR вытекает напрямую из #5 |
…я сущности, отвечающие за создание AST, включая само AST
Изменения архитектуры проекта настолько большие, что на данный момент невозможно досконально изучить последствия для работоспособности приложения. Поэтому в рамках этой доработки покрытие unit тестов будет станет не меньше 80%. Соответственно, будет написано много тестов |
…претатора не конструируются на основе исходного текста, с которым придётся работать, то понятие запроса на создание сущности больше не нужно
При многократной проверке проекта было выявлено, что такие конструкты как BB и CFG сейчас излишни. Их использование оправдано только при построении SSA формы и, как следствие, реализации алгоритмов оптимизации. Сейчас они перегружают домен. https://web.stanford.edu/class/archive/cs/cs143/cs143.1128/lectures/14/Slides14.pdf https://web.stanford.edu/class/archive/cs/cs143/cs143.1128/lectures/15/Slides15.pdf |
Благодаря рефакторингу домена удалось завершить инфраструктурный рефакторинг, остановленный в #5 по причинам, описанным в #5 (comment) |
FrontEnd - лексер, парсер (создание AST) IR - промежуточное представление (AST, проверка семантики) BackEnd - виртуальная машина и её инструкции
Когда проект только создавался, выбор языка (и уж тем более Объектно-Ориентированного) был мотивирован тем, чтобы упростить разработку такой сложной программы как интерпретатор путём моделирования сущностей из предметной области Конструирования Компиляторов.
Правда в силу сжатых сроков в университете и ограниченности личного времени, проектирование архитектуры было проведено на скорую руку. Результаты этого видны уже сейчас.
Нет единого языка, предметной области, ограничения контекстов. Именования пространств имён отвратительное. Всё это требует переработки и улучшения.
Также будет осуществлён переезд на .NET 6